package com.tjec.project.mobile.service;

import com.tjec.framework.web.domain.TreeSelectNew;
import com.tjec.framework.web.domain.TreeSelectProjectDoc;
import com.tjec.project.businessStandardLibrary.domain.BmsKnowledgeBusinessGuide;
import com.tjec.project.businessStandardLibrary.domain.BmsKnowledgeCase;
import com.tjec.project.businessStandardLibrary.domain.BmsKnowledgePolicies;
import com.tjec.project.businessWorkbench.domain.BmsBusiness;
import com.tjec.project.businessWorkbench.domain.BmsBusinessPickup;
import com.tjec.project.businessWorkbench.domain.BmsProjectDoc;
import com.tjec.project.businessWorkbench.domain.BmsProjectDocCatalog;
import com.tjec.project.businessWorkbench.dto.BmsBusinessSketchDto;
import com.tjec.project.portal.domain.BmsMsg;
import com.tjec.project.portal.domain.BmsNotes;
import com.tjec.project.projectLeaderWorkbeanch.domain.BmsExpertPerson;
import com.tjec.project.projectLeaderWorkbeanch.domain.BmsLeaderMember;
import com.tjec.project.projectWorkbench.domain.BmsProject;
import com.tjec.project.projectWorkbench.domain.BmsProjectMember;
import com.tjec.project.projectWorkbench.domain.BmsProjectStakeholder;
import com.tjec.project.workflow.domain.BmsWorkflow;

import java.util.List;
import java.util.Map;

/**
 * 移动端service类
 *
 * @author ：cjj
 * @date ：Created in 2020/8/17 12:03
 */
public interface MobileService {

    /**
     * 我的消息列表-移动端
     * @param bmsMsg
     * @return
     */
    List<BmsMsg> selectBmsMsgMobileList(BmsMsg bmsMsg);

    /**
     * 我的便签列表-移动端
     * @param bmsNotes
     * @return
     */
    List<BmsNotes> selectBmsNotesMobileList(BmsNotes bmsNotes);

    /**
     * 业务手册列表-移动端
     * @param bmsKnowledgeBusinessGuide
     * @return
     */
    List<BmsKnowledgeBusinessGuide> selectBmsKnowledgeBusinessGuideMobileList(BmsKnowledgeBusinessGuide bmsKnowledgeBusinessGuide);

    /**
     * 典型案例列表-移动端
     *
     * @param bmsKnowledgeCase
     * @return
     */
    List<BmsKnowledgeCase> selectBmsKnowledgeCaseMobileList(BmsKnowledgeCase bmsKnowledgeCase);

    /**
     *法规导航列表-移动端
     *
     * @param bmsKnowledgePolicies
     * @return
     */
    List<BmsKnowledgeCase> selectBmsKnowledgePoliciesMobileList(BmsKnowledgePolicies bmsKnowledgePolicies);

    /**
     * 项目清单列表-移动端
     *
     * @param bmsProject
     * @return
     */
    List<BmsProject> selectBmsProjectMobileList(BmsProject bmsProject);

    /**
     *  人员清单列表-移动端
     *
     * @param bmsLeaderMember
     * @return
     */
    List<BmsLeaderMember> selectBmsLeaderMemberMobileList(BmsLeaderMember bmsLeaderMember);

    /**
     * 项目概况-移动端
     *
     * @param guid
     * @return
     */
    BmsProject selectBmsProjectByGuidMobile(String guid);

    /**
     * 项目成员-移动端
     *
     * @param bmsProjectMember
     * @return
     */
    List<BmsProjectMember> selectBmsProjectMemberMobileList(BmsProjectMember bmsProjectMember);

    /**
     * 查询项目干系人-移动端
     *
     * @param bmsProjectStakeholder
     * @return
     */
    List<BmsProjectStakeholder> selectBmsProjectStakeholderMobileList(BmsProjectStakeholder bmsProjectStakeholder);

    /**
     * 查询业务清单-移动端
     *
     * @param bmsBusiness
     * @return
     */
    List<BmsBusiness> selectBmsBusinessMobileList(BmsBusiness bmsBusiness);

    /**
     * 业务概况-移动端
     *
     * @param businessId
     * @return
     */
    BmsBusinessSketchDto getBusinessSketchMobile(String businessId);

    /**
     * 收资管理-移动端
     *
     * @param bmsBusinessPickup
     * @return
     */
    List<BmsBusinessPickup> selectBmsBusinessPickupMobileList(BmsBusinessPickup bmsBusinessPickup);

    Map<String,Object> lazyBuildDocCatalogTreeSelectMobile(BmsProjectDoc bmsProjectDoc);

    /**
     * 项目文档目录-移动端
     *
     * @param bmsProjectDocCatalog
     * @return
     */
    List<TreeSelectNew> buildDocCatalogTreeSelectMobile(BmsProjectDocCatalog bmsProjectDocCatalog);

    /**
     * 项目文档详情-移动端
     *
     * @param bmsProjectDoc
     * @return
     */
    List<BmsProjectDoc> selectAllProjectDocQueryMobileList(BmsProjectDoc bmsProjectDoc);

    /**
     * 成果校审列表-移动端
     *
     * @param bmsWorkflow
     * @return
     */
    List<BmsWorkflow> selectBmsWorkflowMobileList(BmsWorkflow bmsWorkflow);

    /**
     * 项目工作台列表-移动端
     *
     * @param bmsProject
     * @return
     */
    List<BmsProject> selectBmsProjectGlanceMobileList(BmsProject bmsProject);

    /**
     * 是否为项目负责人或项目负责人工作台管理员
     *
     * @param userId
     * @return
     */
    boolean isProjectLeader(String userId);

    /**
     *  批量消息已读
     * @return
     */
    int myMessageBatchRead();

    /**
     * 授权管理员列表
     * @param bmsLeaderMember
     * @return
     */
    List<BmsLeaderMember> selectBmsLeaderMemberList(BmsLeaderMember bmsLeaderMember);

    /**
     * 专家清单列表
     * @param bmsExpertPerson
     * @return
     */
    List<BmsExpertPerson> selectBmsExpertPersonMobileList(BmsExpertPerson bmsExpertPerson);

    /**
     * 项目主页文档查询树-移动端
     * @param bmsProjectDoc
     * @return
     */
    Map<String,Object> lazyBuildFileQueryTreeMobile(BmsProjectDoc bmsProjectDoc);
}
